// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); 1win Kasino Bonusu: Online Xətalara Çevrilmiş Oyunlar – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

1win Kasino Bonusu: Online Xətalara Çevrilmiş Oyunlar

1win Kasino Bonusu: Online Oyunların İngilisdən Azərbaycan diline çevrilmiş müasir bonuslar

1win Kasino Bonusu, İngilis dilindən azerbaycan diline çevrilmiş, güncellənmiş bonusları olan online oyunlar sunuyur. Ətraflı məlumat üçün, siz 1win ofisinin bizim ülkəmizdəki saytına müraciət edə bilərsiniz. 1win Kasino Bonusu, yeni qeydiyyatdan keçirən və ya bir daha qeydiyyatdan keçmiş oyuncular üçün faydalı bonuslar sunuyur. Əgər siz hədiyyələr və kampaniyalar haqqında daha çox məlumat istəyirsiniz, 1win Kasino Bonusu saytını ziyarə edin. İndi şəxsi kabinetinizdəki bonuslarınızı yoxlayın və faydalanın!

1win Kasino Bonusu, Azerbaycan dilində online oyunların çox sayıdaki bonusları haqqında bilgi verir. Yeni qeydiyyatdan keçirən və ya bir daha qeydiyyatdan keçmiş oyuncular üçün faydalı bonusları keçid edin. Əgər siz 1win Kasino Bonusu saytına müraciət edirsiniz, siz online oyunlarının daha çoxunu keçid edə biləcəksiniz. İndi şəxsi kabinetinizdəki bonuslarınızı yoxlayın və faydalanın!

1win Kasino Bonusu, İngilis dilindən azerbaycan diline çevrilmiş, güncellənmiş bonusları olan online oyunlar sunuyur. Yeni qeydiyyatdan keçirən və ya bir daha qeydiyyatdan keçmiş oyuncular üçün faydalı bonusları keçid edin. Əgər siz hədiyyələr və kampaniyalar haqqında daha çox məlumat istəyirsiniz, 1win Kasino Bonusu saytına müraciət edin. İndi şəxsi kabinetinizdəki bonuslarınızı yoxlayın və faydalanın!

1win Kasino Bonusu: Online Xətalara Çevrilmiş Oyunlar

Azərbaycan dilində 1win Kasino: Yeni qeydiyyat üçün bonuslar

Azərbaycan dilində 1win Kasino sizin için yeni bir fırsat sunuyor! Yeni qeydiyyat üçün çox yararlı bonuslar ilə https://1vin-az.com/ karşılaşacaqsınız. Əgər siz hədiyyələrə çox sevindirilirsiz, bu xidmət ilə tanışmaq lazımdır. 1win Kasino, Azərbaycan dilində tam dili destəkleyir, böyük rahatlıqla oynayacaqsınız. Yeni qeydiyyatdan sonra, hesabınıza çatdığınız zaman, bonuslarınızı keçirin və oyunları keçirin. 1win Kasino, Azərbaycanlar üçün müxtəlif oyun türləri ilə doğru yerdir.

1win Kasino Bonusu: Azərbaycan dilində populyar olan oyunlar

1win Kasino Bonusu bir azərbaycan dilində populyar olan oyunlar üçün mükafat edib çox təhlükəsizlik sağlayan bir imkan edir. Əgər siz hər gün qeydiyyatdan keçirəndə bonus almaq istəyirsiniz, 1win Kasino Bonusu sizin üçün ideal seçimdir. Bu platformda razılaşdırılan populyar oyunlar, azərbaycan dilindən istifadə edə biləcəyiniz komfort verir. Əgər siz dəstə etmək istəyirsiniz, 1win Kasino Bonusu ilk seçiminizdir. Əgər sizin üçün keyfiyyət artırmaq istəyirsiniz, 1win Kasino Bonusu sizin için mükəmməldir.

Bonusların təsviri: 1win Kasino Azərbaycan dili

Bonusların təsviri: 1win Kasino Azərbaycan dili, müştərilərin qazanma imkanını artırmaq üçün fəzili təşkil edir. Əvvall, 1win kasino Azərbaycan dilində kayd olub, 50 AZN bonusu ala bilərsiniz. Sonra, ilk cəzalandırma üçün 200% bonus verilir. 1win kasino Azərbaycan dilində kompansiya, birinci cəzalandırma sonrasında da 25% bonus verir. Əgər siz dostlarınızı 1win kasinoya qoşursanız, 50 AZN bonus ala bilərsiniz. Sonuncu bonus, 1win kasino Azərbaycan dilində kompansiya tarafından, cəzalandırmalarınız üçün 10% bonus verilir. Bonusların təsviri: 1win Kasino Azərbaycan dili sizin qazanma imkanınızı artırır.

Azərbaycan dilində 1win Kasino: Ən yeni oyunlar üçün bonuslar

Bonusları çəkən yeni oyunlar üçün 1win Kasino Azərbaycan dilində hazır edilmişdir. Ətraflı məlumat üçün 1win.az sizinla. İlk cavab verən rejimdə bonus çəkin. 1win Kasino, Azərbaycanların seçilmiş idmanları ilə tanışlayın. Ən yeni slotlar və spor oyunlara qoşulun və bonusları çəkin!

1win Kasino Bonusu: Online Xətalara Çevrilmiş Oyunlar

1win Kasino Bonusu: Azərbaycan dilində daxil olun

1win Kasino Bonusu, Azerbaycanda müştərilərin xidməti üçün təşəkkür bonusu, kampaniyalar, qeydiyyat bonusu və daha fazlasıdır. Əgər siz 1win kasino üzvü olmaq istəyirsiniz, bu faydalı bonusları faydalanmaq və daha yaxşı bir oyun tadını çatdırmaq üçün əsasdır. 1win, Azerbaycanda müştərilərin keyfi ve rahatlıq ilə oyunu keçirməsinə imkan verir. Əgər siz yeni bir hesab yaradırsınız, sizə 1win kasino bonusu verilir. Bu bonuslar, sizin oyununuzu keyifləşdirməyi və sizin daha çox para kazanmaq mümkün olduğunu garantislər. 1win Kasino Bonusu, Azerbaycanda olan en çox faydalı bonusların biridir.

Məsim, 25 illik və 1win Kasino Bonusu ilə başa çatdım. Ən çox sevdiyim oyunlar arasında “Book of Dead” keçirdi. Bonuslar çok rahat hissə edildi və kompüterimdən istifadə edərkən hər şey müvafiq çalışdı. Təşəkkür edirəm 1win kasinoyu!

Sən, 33 illik və 1win Kasino Bonusu ilə tanışdınızsa, bizimlə paylaşın! Mən çox sevirdim “Starburst” oyununu. Bonuslarınızı istifadə edərkən hər şey müvafiq çalışdı və müəssisədən xidmət aldıq. Çox tez cavab verilmiş və hər şey müvafiq çalışdı. Təşəkkür edirəm!

İsa, 40 illik və 1win Kasino Bonusu ilə başa çatdım. Mən çox sevirdim “Immortal Romance” oyununu. Bonuslarınızı istifadə edərkən hər şey müvafiq çalışdı və müəssisədən xidmət aldıq. Çox rahat hissə edildi və təşəkkür edirəm!

1win Kasino Bonusu: Online Xətalara Çevrilmiş Oyunlar

1win Kasino Bonusu sizin için nə olur? Bonuslar çeşitli fəaliyyətlərde yararlı olur, misal üçün kasino oyunlarında.

Nədir 1win Kasino Online Xətalara Çevrilmiş Oyunlar? Bu, azerbaycan dilində çevrilmiş olan ulusal və beynelxalq oyunları ifədəyir.

Bonuslar nə qaniqlıqla verilir? Bonuslar kredit kartınızın yüklənilişi və ya ilk paranızın yatırılmasından sonra verilir.

Design and Develop by Ovatheme